<?php
/**
 * Kelas user
 */
class peminjaman_barang extends CI_Controller {
	
	 //Konstruktor
	 
	function __construct()
	{
		parent::__construct();
		$this->load->model('peminjaman_barang_model', 'pinjam_barang');	
		$this->load->model('barang_model');	
		$this->load->model('agenda_model');	
		$this->load->model('agenda_tim_model');	
		$this->load->library('form_validation');
		$this->cek_session();
	}
	
	function cek_session()
	 {	
		$kode_role = $this->session->userdata('id_jabatan');
		if($kode_role == NULL)
		{
			//redirect('login/login_ulang');
			redirect('login');
		}//else if($kode_role != 1){
			//redirect('login/alert');
		//}
	 }
	
	/**
	 * Menampilkan tabel daftar barang
	 */
	 function index($id_agenda)
	 {
			//$id_agenda = '24';
			$tim = $this->agenda_tim_model->ambil_daftar_peminjaman($id_agenda);
			$boleh_lihat = false;
			foreach ($tim->result() as $orang){
				if($orang->id_anggota == $this->session->userdata('id_user')){
					$boleh_lihat = true;
				}
			}
		
			$data_konten['boleh_lihat']=$boleh_lihat;
			$agenda = $this->agenda_model->ambil_detail_agenda($id_agenda);
			$data_konten['id_agenda']=$agenda->row()->id_agenda;
			$data_konten['nama_agenda']=$agenda->row()->nama_agenda;
			$data_konten['tanggal_agenda']=date('d F Y', strtotime($agenda->row()->tanggal_mulai)).' s.d. '.date('d F Y', strtotime($agenda->row()->tanggal_selesai));
			$data_konten['status']=$agenda->row()->status_agenda;
			$data_konten['id_org']=$agenda->row()->id_organisasi;
			$data_konten['peminjaman_barang']=$this->pinjam_barang->ambil_daftar_peminjaman($id_agenda);			
			$data["konten"] = $this->load->view("daftar_peminjaman_barang", $data_konten, TRUE);
			$data["menu"] = 'agenda';
			if($this->session->userdata('id_organisasi') == $this->agenda_model->ambil_detail_agenda($id_agenda)->row()->id_organisasi){
			$data["sub_menu"] = 'daftar_agenda';
			} else{
			$data["sub_menu"] = 'daftar_agenda_all';
			}
			$this->load->view("main", $data);
	 }
	 
	 function detail_peminjaman_barang($id_peminjaman_barang){
				$peminjaman_barang=$this->pinjam_barang->ambil_detail_peminjaman($id_peminjaman_barang);
				
				$agenda = $this->agenda_model->ambil_detail_agenda($peminjaman_barang->row()->id_agenda);
				$id_agenda=$agenda->row()->id_agenda;
				$data_konten['id_agenda']=$agenda->row()->id_agenda;
				$data_konten['nama_agenda']=$agenda->row()->nama_agenda;
				$data_konten['id_org']=$agenda->row()->id_organisasi;
				$data_konten['tanggal_agenda']=date('d F Y', strtotime($agenda->row()->tanggal_mulai)).' s.d. '.date('d F Y', strtotime($agenda->row()->tanggal_selesai));
				$data_konten['kode_barang'] = $peminjaman_barang->row()->kode_barang;
				$data_konten['nama_barang'] = $peminjaman_barang->row()->nama_barang.' ('.$peminjaman_barang->row()->keterangan.')';
				$data_konten['foto_barang'] = $peminjaman_barang->row()->foto_barang;
				$data_konten['id_peminjaman'] = $peminjaman_barang->row()->id_peminjaman;
				
				$data_konten['tanggal_pinjam'] = date('d F Y', strtotime($peminjaman_barang->row()->tanggal_pinjam)).' Jam : '.$peminjaman_barang->row()->jam_pinjam;
				$data_konten['tanggal_kembali'] = date('d F Y', strtotime($peminjaman_barang->row()->tanggal_kembali)).' Jam : '.$peminjaman_barang->row()->jam_kembali;				
				
				$data_konten['status_peminjaman'] = $peminjaman_barang->row()->status_peminjaman;
				$data_konten['kondisi_barang'] = $peminjaman_barang->row()->kondisi_barang;
				$data_konten['keterangan_peminjaman'] = $peminjaman_barang->row()->keterangan_peminjaman;
				$data["konten"] = $this->load->view("detail_peminjaman_barang", $data_konten, TRUE);			
				$data["menu"] = 'agenda';
				if($this->session->userdata('id_organisasi') == $this->agenda_model->ambil_detail_agenda($id_agenda)->row()->id_organisasi){
				$data["sub_menu"] = 'daftar_agenda';
				} else{
				$data["sub_menu"] = 'daftar_agenda_all';
				}
				$this->load->view("main", $data);	 
	 }
	
	//proses penambahan barang
	function add_process($id_agenda='')
	{	
		if($id_agenda == ''){
			$id_agenda = $this->input->post('id_agenda');
		}
		
		$agenda = $this->agenda_model->ambil_detail_agenda($id_agenda);
		$data_konten['id_agenda']=$agenda->row()->id_agenda;
		$data_konten['nama_agenda']=$agenda->row()->nama_agenda;
		$data_konten['tanggal_agenda']=date('d F Y', strtotime($agenda->row()->tanggal_mulai)).' s.d. '.date('d F Y', strtotime($agenda->row()->tanggal_selesai));
		
		$tim = $this->agenda_tim_model->ambil_daftar_peminjaman($id_agenda);
		$boleh_lihat = false;
		foreach ($tim->result() as $orang){
			if($orang->id_anggota == $this->session->userdata('id_user')){
				$boleh_lihat = true;
			}
		}
		
		$data_konten['boleh_lihat']=$boleh_lihat;
		
		$role_jabatan = $this->session->userdata('id_jabatan');
		if(($role_jabatan == '2' || $role_jabatan == '4' || $boleh_lihat) && ($agenda->row()->status_agenda != 'Tidak diliput' && $agenda->row()->status_agenda != 'Batal' && $agenda->row()->status_agenda != 'Finish') && $this->session->userdata('id_organisasi') == $agenda->row()->id_organisasi){			
			
			if($this->cek_validasi('add') == true)
			{
				$tanggal_pinjam = explode('/', $this->input->post('tanggal_pinjam'));
				$tanggal_pinjam2 = $tanggal_pinjam[2].'-'.$tanggal_pinjam[0].'-'.$tanggal_pinjam[1];
				$tanggal_kembali = explode('/',$this->input->post('tanggal_kembali'));
				$tanggal_kembali2 = $tanggal_kembali[2].'-'.$tanggal_kembali[0].'-'.$tanggal_kembali[1];
				$jam_pinjam = $this->input->post('jam_pinjam').':'.$this->input->post('menit_pinjam').':00';
				$jam_kembali = $this->input->post('jam_kembali').':'.$this->input->post('menit_kembali').':00';
				$peminjaman_barang = array('id_agenda' 		=> $this->input->post('id_agenda'),
									'kode_barang' 		=> $this->input->post('barang'),
									'id_anggota'		=> $this->session->userdata('id_user'),
									'tanggal_pinjam'  	=> $tanggal_pinjam2,
									'tanggal_kembali'  	=> $tanggal_kembali2,
									'jam_pinjam'  		=> $jam_pinjam,
									'jam_kembali'  		=> $jam_kembali,
									'status_peminjaman'	=> 'Dibooking/dibawa',
									'kondisi_barang'	=> $this->barang_model->ambil_detail_barang($this->input->post('barang'))->row()->kondisi_inventaris,
									'keterangan_peminjaman' => $this->input->post('keterangan')
									);
			
				$this->pinjam_barang->tambah_peminjaman_barang($peminjaman_barang);
				$this->session->set_flashdata('sukses', 'Peminjaman barang '.$this->barang_model->ambil_detail_barang($this->input->post('barang'))->row()->nama_barang.' ('.$this->barang_model->ambil_detail_barang($this->input->post('barang'))->row()->keterangan.') berhasil ditambahkan.');
				redirect('peminjaman_barang/index/'.$id_agenda);
			}
			else{
				if($this->input->post('barang') != ''){
					$data_konten['list_peminjaman']=$this->pinjam_barang->get_list_peminjaman_bybarang($this->input->post('barang'));
				}else{
					$data_konten['list_peminjaman']='';
				}
				$data_konten['barang']=$this->barang_model->ambil_daftar_barang($this->session->userdata('id_organisasi'));
				$data["konten"] = $this->load->view("tambah_peminjaman_barang", $data_konten, TRUE);			
				$data["menu"] = 'agenda';
				$data["sub_menu"] = 'daftar_agenda';
				$this->load->view("main", $data);
			}
		} else {
			redirect('home');
		}
	}
	
	//mengubah isi peminjaman barang
	function edit_proses($id_peminjaman_barang='')	{
		
		if($id_peminjaman_barang == ''){
			$id_peminjaman_barang = $this->input->post('id_peminjaman_lama');
		}
		
		$peminjaman_barang=$this->pinjam_barang->ambil_detail_peminjaman($id_peminjaman_barang);
		$agenda = $this->agenda_model->ambil_detail_agenda($peminjaman_barang->row()->id_agenda);
		$id_agenda=$agenda->row()->id_agenda;
		$data_konten['id_agenda']=$agenda->row()->id_agenda;
		$data_konten['nama_agenda']=$agenda->row()->nama_agenda;
		$data_konten['tanggal_agenda']=date('d F Y', strtotime($agenda->row()->tanggal_mulai)).' s.d. '.date('d F Y', strtotime($agenda->row()->tanggal_selesai));
		
		$tim = $this->agenda_tim_model->ambil_daftar_peminjaman($id_agenda);
		$boleh_lihat = false;
		foreach ($tim->result() as $orang){
			if($orang->id_anggota == $this->session->userdata('id_user')){
				$boleh_lihat = true;
			}
		}
		
		$role_jabatan = $this->session->userdata('id_jabatan');
		if(($role_jabatan == '2' || $role_jabatan == '4' || $this->session->userdata('id_user') == $peminjaman_barang->row()->id_anggota) && ($agenda->row()->status_agenda != 'Tidak diliput' && $agenda->row()->status_agenda != 'Batal' && $agenda->row()->status_agenda != 'Finish') && $this->session->userdata('id_organisasi') == $agenda->row()->id_organisasi){			
			
			if($this->cek_validasi('edit') == true)
			{
				$tanggal_pinjam = explode('/', $this->input->post('tanggal_pinjam'));
				$tanggal_pinjam2 = $tanggal_pinjam[2].'-'.$tanggal_pinjam[0].'-'.$tanggal_pinjam[1];
				$tanggal_kembali = explode('/',$this->input->post('tanggal_kembali'));
				$tanggal_kembali2 = $tanggal_kembali[2].'-'.$tanggal_kembali[0].'-'.$tanggal_kembali[1];
				$jam_pinjam = $this->input->post('jam_pinjam').':'.$this->input->post('menit_pinjam').':00';
				$jam_kembali = $this->input->post('jam_kembali').':'.$this->input->post('menit_kembali').':00';
				$id_peminjaman_lama = $this->input->post('id_peminjaman_lama');
				$peminjaman_barang = array('id_agenda' 		=> $this->input->post('id_agenda'),
										'kode_barang' 		=> $this->input->post('barang'),
										'id_anggota'		=> $this->session->userdata('id_user'),
										'tanggal_pinjam'  	=> $tanggal_pinjam2,
										'tanggal_kembali'  	=> $tanggal_kembali2,
										'jam_pinjam'  		=> $jam_pinjam,
										'jam_kembali'  		=> $jam_kembali,
										'status_peminjaman'	=> $this->input->post('status_peminjaman'),
										'kondisi_barang'	=> $this->input->post('kondisi_barang'),
										'keterangan_peminjaman' => $this->input->post('keterangan')
									);
			
				$this->pinjam_barang->edit_peminjaman_barang($peminjaman_barang, $id_peminjaman_lama);
				$barang_baru = array(
								'kondisi_inventaris'	=> $this->input->post('kondisi_barang')
							);
				$kode_barang_lama = $this->input->post('barang');
				$this->barang_model->edit_barang($barang_baru, $kode_barang_lama);
				$this->session->set_flashdata('sukses', 'Peminjaman barang '.$this->barang_model->ambil_detail_barang($kode_barang_lama)->row()->nama_barang.' ('.$this->barang_model->ambil_detail_barang($kode_barang_lama)->row()->keterangan.') berhasil diubah.');
				redirect('peminjaman_barang/index/'.$id_agenda);
			}
			else{
				if($this->input->post('barang') != ''){
					$data_konten['list_peminjaman']=$this->pinjam_barang->get_list_peminjaman_bybarang($this->input->post('barang'));
				} else{
					$data_konten['list_peminjaman']=$this->pinjam_barang->get_list_peminjaman_bybarang($peminjaman_barang->row()->kode_barang);
				}
				
				$data_konten['barang']=$this->barang_model->ambil_daftar_barang($this->session->userdata('id_organisasi'));
				$data_konten['kode_barang'] = $peminjaman_barang->row()->kode_barang;
				$data_konten['id_peminjaman'] = $peminjaman_barang->row()->id_peminjaman;
				$tanggal_pinjam = explode('-', $peminjaman_barang->row()->tanggal_pinjam);
				$tanggal_pinjam2 = $tanggal_pinjam[1].'/'.$tanggal_pinjam[2].'/'.$tanggal_pinjam[0];
				$data_konten['tanggal_pinjam'] = $tanggal_pinjam2;			
				$tanggal_kembali = explode('-', $peminjaman_barang->row()->tanggal_kembali);
				$tanggal_kembali2 = $tanggal_kembali[1].'/'.$tanggal_kembali[2].'/'.$tanggal_kembali[0];
				$data_konten['tanggal_kembali'] = $tanggal_kembali2;
				$jam_pinjam = explode(':', $peminjaman_barang->row()->jam_pinjam);
				$data_konten['jam_pinjam'] = $jam_pinjam[0];
				$jam_kembali = explode(':', $peminjaman_barang->row()->jam_kembali);
				$data_konten['jam_kembali'] = $jam_kembali[0];
				$data_konten['status_peminjaman'] = $peminjaman_barang->row()->status_peminjaman;
				$data_konten['kondisi_barang'] = $peminjaman_barang->row()->kondisi_barang;
				$data_konten['keterangan_peminjaman'] = $peminjaman_barang->row()->keterangan_peminjaman;
				$data["konten"] = $this->load->view("edit_peminjaman_barang", $data_konten, TRUE);			
				$data["menu"] = 'agenda';
				$data["sub_menu"] = 'daftar_agenda';
				$this->load->view("main", $data);
			}
		} else {
			redirect('home');
		}
	}
	
	function hapus_peminjaman_barang($id_peminjaman_barang){
		$peminjaman = $this->pinjam_barang->ambil_detail_peminjaman($id_peminjaman_barang);		
		$agenda = $this->agenda_model->ambil_detail_agenda($peminjaman->row()->id_agenda);
		
		$role_jabatan = $this->session->userdata('id_jabatan');
		if(($role_jabatan == '2' || $role_jabatan == '4' || $this->session->userdata('id_user') == $peminjaman_barang->row()->id_anggota) && ($agenda->row()->status_agenda != 'Tidak diliput' && $agenda->row()->status_agenda != 'Batal' && $agenda->row()->status_agenda != 'Finish') && $this->session->userdata('id_organisasi') == $agenda->row()->id_organisasi){			
			$this->pinjam_barang->hapus_peminjaman_barang($id_peminjaman_barang);
			$this->session->set_flashdata('sukses', 'Peminjaman barang '.$this->barang_model->ambil_detail_barang($peminjaman->row()->kode_barang)->row()->nama_barang.' ('.$this->barang_model->ambil_detail_barang($peminjaman->row()->kode_barang)->row()->keterangan.') berhasil dihapus.');
			redirect('peminjaman_barang/index/'.$peminjaman->row()->id_agenda);
		} else {
			redirect('home');
		}
	}
	
	function cek_tanggal_pinjam(){
		$tanggal_pinjam = $this->input->post('tanggal_pinjam');
		$tanggal_kembali = $this->input->post('tanggal_kembali');
		
		if($tanggal_pinjam > $tanggal_kembali){
			$this->form_validation->set_message('cek_tanggal_pinjam', '<label for="error" generated="true" class="error" style="">%s tidak boleh lebih besar dari tanggal kembali!!</label>');
			return FALSE;
		} else{
			return TRUE;
		}
		
	}
	
	function cek_tanggal_kembali(){
		$tanggal_pinjam = $this->input->post('tanggal_pinjam');
		$tanggal_kembali = $this->input->post('tanggal_kembali');
		
		if($tanggal_kembali < $tanggal_pinjam){
			$this->form_validation->set_message('cek_tanggal_kembali', '<label for="error" generated="true" class="error" style="">%s tidak boleh lebih kecil dari tanggal pinjam!!</label>');
			return FALSE;
		} else{
			return TRUE;
		}
		
	}
	
	function cek_jam_pinjam(){
		$tanggal_pinjam = $this->input->post('tanggal_pinjam');
		$tanggal_kembali = $this->input->post('tanggal_kembali');
		$jam_pinjam = $this->input->post('jam_pinjam');
		$jam_kembali = $this->input->post('jam_kembali');
		
		if($tanggal_kembali == $tanggal_pinjam && $jam_pinjam > $jam_kembali){
			$this->form_validation->set_message('cek_jam_pinjam', '<label for="error" generated="true" class="error" style="">%s tidak boleh lebih besar dari jam kembali!!</label>');
			return FALSE;
		} else{
			return TRUE;
		}
		
	}
	
	function cek_peminjaman(){
		$kode_barang = $this->input->post('barang');
		$tanggal_pinjam2 = explode('/', $this->input->post('tanggal_pinjam'));
		$tanggal_pinjam = $tanggal_pinjam2[2].'-'.$tanggal_pinjam2[0].'-'.$tanggal_pinjam2[1];
		$tanggal_kembali2 = explode('/',$this->input->post('tanggal_kembali'));
		$tanggal_kembali = $tanggal_kembali2[2].'-'.$tanggal_kembali2[0].'-'.$tanggal_kembali2[1];		
		$jampinjam = $this->input->post('jam_pinjam');
		$jamkembali = $this->input->post('jam_kembali');
		
		$list_peminjaman_barang = $this->pinjam_barang->get_list_peminjaman_barang($kode_barang, $tanggal_pinjam, $tanggal_kembali);
			foreach($list_peminjaman_barang->result() as $row){
				$jam_pinjam = explode(':', $row->jam_pinjam);
				$jam_kembali = explode(':', $row->jam_kembali);				
				//if($row->tanggal_kembali > $row->tanggal_pinjam){
					for($tanggal = $row->tanggal_pinjam; $tanggal <= $row->tanggal_kembali; $a=1){
						
						if($tanggal == $row->tanggal_pinjam){
							$jam_awal = $jam_pinjam[0];
						}else{
							$jam_awal = 1;	
						}
						
						if($tanggal != $row->tanggal_kembali){							
							$jam_akhir = 24;
						} else{
							$jam_akhir = $jam_kembali[0];
						}
						
						for($jam = $jam_awal; $jam <= $jam_akhir; $jam++){
							if(($tanggal_pinjam == $tanggal && $jampinjam == $jam) || ($tanggal_kembali == $tanggal && $jamkembali == $jam)){
								$this->form_validation->set_message('cek_peminjaman', '<label for="error" generated="true" class="error" style="">Barang telah dipinjam pada waktu tersebut!!</label>');
								return FALSE;
								//print ('Sudah dipinjam nih '.$tanggal.' jam : '.$jam.'<br/>');
								}				
						}
						
						$date = date_create($tanggal);
						date_add($date, date_interval_create_from_date_string('1 days'));
						$tanggal = date_format($date, 'Y-m-d');
					}
			}
		
	}
	
	// Set validation rules
	function cek_validasi($proses)
	{	

		if($proses == 'edit'){
			$this->form_validation->set_rules('status_peminjaman', 'status pengembalian', 'required');
			$this->form_validation->set_rules('kondisi_barang', 'kondisi barang', 'required');
		}
		$this->form_validation->set_rules('barang', 'barang yang akan dipinjam', 'required');
		$this->form_validation->set_rules('tanggal_pinjam', 'tanggal peminjaman', 'required|callback_cek_tanggal_pinjam');
		$this->form_validation->set_rules('tanggal_kembali', 'tanggal pengembalian', 'required|callback_cek_tanggal_kembali|callback_cek_peminjaman');
		$this->form_validation->set_rules('jam_pinjam', 'jam peminjaman', 'required|callback_cek_jam_pinjam');
		$this->form_validation->set_rules('jam_kembali', 'jam pengembalian', 'required');
		$this->form_validation->set_message('required', '<label for="error" generated="true" class="error" style="">Kolom %s harus diisi !!</label>');
		return $this->form_validation->run();
	}
} // END user class

/* End of file user.php */
/* Location: ./system/application/controllers/manajemen_user.php */
